/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2020-01-08     shelton      first version
 */

#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"
#include "drv_gpio.h"

#include "M_SDH2_LCD.h"


/* defined the LED2 pin: PD13 */
#define LED2_PIN    GET_PIN(D, 13)
/* defined the LED3 pin: PD14 */
#define LED3_PIN    GET_PIN(D, 14)
/* defined the LED4 pin: PD15 */
#define LED4_PIN    GET_PIN(D, 15)

uint32_t Speed = 200;

//
static rt_thread_t Key_thread = RT_NULL;
static rt_thread_t Led_thread = RT_NULL;

static void Led_entry(void *parameter) {

  while (1) {
    rt_pin_write(LED2_PIN, PIN_LOW);
    rt_thread_mdelay(Speed);
    rt_pin_write(LED3_PIN, PIN_LOW);
    rt_thread_mdelay(Speed);
    rt_pin_write(LED4_PIN, PIN_LOW);
    rt_thread_mdelay(Speed);
    rt_pin_write(LED2_PIN, PIN_HIGH);
    rt_thread_mdelay(Speed);
    rt_pin_write(LED3_PIN, PIN_HIGH);
    rt_thread_mdelay(Speed);
    rt_pin_write(LED4_PIN, PIN_HIGH);
    rt_thread_mdelay(Speed);    

  }
}


static void Key_entry(void *parameter) {
uint8 i,Buf[2];

  while (1) {
    if (scan_key() != 0) {
      i = key_data/0x10;
      if (i <10) Buf[0] = i+'0';
      else       Buf[0] = (i-10)+'a';
      i = key_data%0x10;
      if (i <10) Buf[1] = i+'0';
      else       Buf[1] = (i-10)+'a';
      display_lcd_str(0,0,Buf,2);
    }
    rt_thread_mdelay(200);

  }
}


int main(void)
{
    /* set LED2 pin mode to output */
    rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
    /* set LED3 pin mode to output */
    rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT);
    /* set LED4 pin mode to output */
    rt_pin_mode(LED4_PIN, PIN_MODE_OUTPUT);

  KEY_PIN_init(); 
  LCD_PIN_init();
  LCD_init();
  	
  Key_thread = rt_thread_create("Key",Key_entry, RT_NULL, 512, 3, 20);
  Led_thread = rt_thread_create("Led",Led_entry, RT_NULL, 512, 4, 20);

  rt_thread_startup(Key_thread);
  rt_thread_startup(Led_thread);
	
  while (1) {
  }
}
